iT邦幫忙

2022 iThome 鐵人賽

DAY 8
2
Software Development

林姓商人與指令操作的秘密—談 Linux command line interface系列 第 8

Day 08:列出資料夾內檔案的 ls,還有能看穿隱身斗篷的秘密指令

  • 分享至 

  • xImage
  •  

能到處進入資料夾以後,接著我們就希望能看到每個資料夾內的檔案了。

要能夠這麼做,我們可以使用 ls 這個指令

man ls
NAME
       ls - list directory contents

首先,我們進到 ~ 裡面之後,嘗試 ls 看看

ls

奇怪!怎麼什麼都沒有?

這是因為在預設的 ~ 裡面(以我們的用戶來說是 /home/ec2-user/),確實什麼都沒有。

如果我們到 / 裡面,那就會看到不一樣的結果了

cd / 
ls

bin  boot  dev  etc  home  lib  lib64  local  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

除了昨天我們列出的資料夾以外,還有一些沒有見過的資料夾,這些就是不同系統自己設計的內容了!

不過,如果剛剛各位實際看過 man ls 裡面的內容,會看到一個參數

-a, --all
	  do not ignore entries starting with .

這是什麼意思?我們在 ~ 裡面嘗試看看

ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .config  .ssh  .viminfo

咦!剛剛不是才說「在預設的 ~ 裡面,確實什麼都沒有。」嗎?這些檔案是什麼!

首先,在資料夾結構內,有兩個保留的關鍵字位置

. 代表「現在的資料夾」

.. 代表「包含此資料夾的父資料夾」

所以,如果我們在 /home/ec2-user/ 內,要去 /home/ 的話,可以用 cd ..

cd ..
pwd

/home

另外,在 linux 系統裡面,有一些檔案當初設計者希望可以隱藏,這些檔案通常都會用 . 作為開頭。

我們可以嘗試進入 .ssh 看看

cd .ssh
ls
authorized_keys

就這樣!我們進入了一個隱藏的資料夾。

這樣的設計方式,在撰寫列出檔案時,只需要將開頭為 . 的內容全部忽略,我們就可以略過指定本資料夾、指定上個資料夾、以及所有的隱藏資料夾和隱藏檔案了,可以說是設計上的一個小巧思。

我們再嘗試進入 /home/ec2-user/.bash_history

cd .bash_history
-bash: cd: .bash_history: Not a directory

沒有辦法進去,因為 .bash_history 不是一個資料夾。

難道沒有辦法列的更清楚,讓我們知道哪些是資料夾,哪些是檔案嗎?

有的!答案一樣藏在 man 大師的秘笈裡面,

-F, --classify
	  append indicator (one of */=>@|) to entries

--file-type
	  likewise, except do not append '*'

利用指令參數的組合,搭配上 -a 看看

ls -a --file-type
./  ../  .bash_history  .bash_logout  .bash_profile  .bashrc  .config/  .ssh/  .viminfo

可以看到,資料夾都加上了 / 的結尾,我們很清楚的就知道哪些是資料夾,哪些是檔案了。

另外要介紹的,就是 -l 這個參數

-l     use a long listing format

我們試看看搭配上 -a,這次可以直接將兩個參數合併在一起

ls -al

drwx------  5 ec2-user ec2-user   147 Apr 22  2021 .
drwxr-xr-x  4 root     root        36 Sep  4 13:03 ..
-rw-------  1 ec2-user ec2-user  2146 Sep  5 14:46 .bash_history
-rw-r--r--  1 ec2-user ec2-user    18 Jul 15  2020 .bash_logout
-rw-r--r--  1 ec2-user ec2-user   193 Jul 15  2020 .bash_profile
-rw-r--r--  1 ec2-user ec2-user   231 Jul 15  2020 .bashrc
drwxrwxr-x  3 ec2-user ec2-user    22 Apr 19  2021 .config
drwx------  2 ec2-user ec2-user    29 Apr 19  2021 .ssh
-rw-------  1 ec2-user ec2-user 15922 Apr 22  2021 .viminfo

可以看出來,這邊還多列出了檔案的時間、作者⋯⋯等等資訊。

不過為什麼作者要列兩次?前面的 drwx------ 又代表什麼?

這些問題,我們就留到明天吧!各位明天見!


上一篇
Day 07:查看自己的檔案,談 `pwd` `cd` 和各個指令
下一篇
Day09:魔法的限制——檔案權限:chgrp、chown
系列文
林姓商人與指令操作的秘密—談 Linux command line interface30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言